#include <bits/stdc++.h>
// 2025/07/20
// tag:
// Author: Forever
using namespace std;
#define int long long
int n, m, ans, minv[16], mins[16];

bool check(int r, int h, int dep, int v)
{
    while (dep <= m && v < n) {
        v += r * r * h;
        r--, h--, dep++;
    }
    return v < n;
}

void dfs(int r, int h, int v, int s, int dep)
{
    if (dep == m) {
        if (v == n)
            ans = min(ans, s);
        return;
    }
    if (v + minv[m - dep] > n || s + mins[m - dep] > ans || s + 2 * (n - v) / (r - 1) > ans || check(r, h, dep, v))
        return;
    int mxr = min(r, (int)sqrt((n - v - minv[m - dep - 1]) / (m - dep)) + 5);
    for (int i = m - dep; i < mxr; i++) {
        int mxh = min(h, (n - v) / (i * i) + 1);
        for (int j = m - dep; j < mxh; j++) {
            int t = 0;
            if (dep == 0)
                t = i * i;
            dfs(i, j, v + i * i * j, s + 2 * i * j + t, dep + 1);
        }
    }
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cin >> n >> m;
    ans = 0x3f3f3f3f;
    for (int i = 1; i <= m; i++)
        minv[i] = minv[i - 1] + i * i * i, mins[i] = mins[i - 1] + 2 * i * i;
    dfs(sqrt(n) + 1, n, 0, 0, 0);
    if (ans == 0x3f3f3f3f)
        ans = 0;
    cout << ans << endl;
    return 0;
}